// packageA/pages/reviewToday/reviewToday.js
import { getUserInfo } from '../../../utils/userInfo';
Page({

    /**
     * 页面的初始数据
     */
    data: {
        value: Number,  // 目标进度
        gradientColor: {
            '0%': '#00BFFF',
            '50%': '#40E0D0',
            '100%': '#00FFFF',
        },
        total: Number, // 一共多少题
        resArr: Array, // 获取所有待复习的题目
        currentShow: Object, // 当前展示的题目
        currentIndex: Number, // 当前展示的题目的下标
    },

    // 点击下一题
    onNext() {
        // value进度改变方法，100/总长度=单份，单份*currentIndex=当前进度
        const { total, resArr, currentIndex, value } = this.data;
        if (value < 100) {
            this.setData({
                currentIndex: currentIndex + 1,
                value: value + 100 / total,
                currentShow: resArr[currentIndex + 1]
            })
        } else {
            wx.showToast({
                title: '已经是最后一题啦',
                icon: 'none',
            })
        }
    },

    // 点击上一题
    onLast() {
        const { total, resArr, currentIndex, value } = this.data;
        if (value > (100 / total)) {
            this.setData({
                currentIndex: currentIndex - 1,
                value: value - 100 / total,
                currentShow: resArr[currentIndex - 1]
            })
        } else {
            wx.showToast({
                title: '已经回到第一题啦',
                icon: 'none',
            })
        }
    },

    // 跳转详情页
    toDetail(e) {
        const { qid } = e.currentTarget.dataset;
        wx.navigateTo({
            url: '../../../pages/questionDetail/questionDetail?qid=' + qid,
        })
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {

    },

    // 按照今天的日期，找昨天一天的日期，从数据库中拿出错题
    getYesterdayData: async function () {
        // 获取用户昨天一天发布的错题
        var time = (new Date).getTime() - 24 * 60 * 60 * 1000;
        var yesday = new Date(time); // 获取的是前一天日期
        // 获取yewday从0点到24点的时间戳，从数据库拿数据要在这个区间里
        const year = yesday.getFullYear();
        const month = yesday.getMonth() + 1;
        const day = yesday.getDate()
        const startTime = new Date(year + '-' + month + '-' + day + ' ' + '00:00:00').getTime();
        const overTime = new Date(year + '-' + month + '-' + day + ' ' + '23:59:59').getTime();
        console.log(startTime, overTime);
        const { _id } = getUserInfo();
        const gradeDesc = wx.getStorageSync('gradeDesc');
        // 进行查询
        const res = await wx.cloud.callFunction({
            // 云函数名称
            name: 'reqQuestionAPI',
            // 传给云函数的参数
            data: {
                scene: 'GET_YESTARDAY_QUESTION',
                uid: _id,
                gradeDesc,
                startTime,
                overTime,
            },
        })
        return res.result.data;
    },

    // 获取标记过的错题
    getLightQuestion: async function () {
        // 获取标记过的错题
        const { _id } = getUserInfo();
        const gradeDesc = wx.getStorageSync('gradeDesc');
        // 进行查询
        const res = await wx.cloud.callFunction({
            // 云函数名称
            name: 'reqQuestionAPI',
            // 传给云函数的参数
            data: {
                scene: 'GET_MY_LIGHT_QUESTION',
                uid: _id,
                gradeDesc,
            },
        });
        return res.result.data;
    },

    /* 
     * 将获取到的两次数据，昨天全部添加的，和当前标记的，找到，
     * 剔除其中一样的题目，防止展示的错题重复
     */
    getArrDifference: async function () {
        wx.showLoading({
            title: '加载中，请稍等...',
        })
        const arr1 = await this.getYesterdayData();
        const arr2 = await this.getLightQuestion();
        // console.log(arr1, arr2);
        // 先合并两个数组
        const arrSum = arr1.concat(arr2);
        let newArr = [];
        // 去重
        for (let item1 of arrSum) {
            let flag = true;  //创建标记，判断数据是否重复，true为不重复
            for (let item2 of newArr) {  //循环新数组的内容
                if (item1._id == item2._id) {
                    flag = false;
                }
            }
            //判断是否重复
            if (flag) {
                newArr.push(item1); //不重复的放入新数组，新数组的内容会继续进行上边的循环。
            }
        };
        console.log(newArr);
        // 这个newArr就是最终找到的结果
        this.setData({
            resArr: [...newArr],
            total: newArr.length,
            currentShow: newArr[0], // 初始展示第一题
            currentIndex: 0,  // 第一题的下标
        }, () => {
            const { total, currentIndex } = this.data;
            this.setData({
                value: 100 / total * (currentIndex + 1), // 初始进度
            });
            wx.hideLoading();
        });
    },


    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {
        this.getArrDifference();
        // console.log(this.getLightQuestion());
    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})